/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controller;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import model.*;
import org.hibernate.Session;
import org.hibernate.Transaction;
import persistence.SessionManager;

/**
 *
 * @author Johan
 */
public class MijnRittenController extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
        // Haal de huidige sessie op
        HttpSession sessie = request.getSession();

        //Geselecteerde rit uit de request halen
        int ritid = 0;
        try {
            ritid = Integer.parseInt(request.getParameter("id"));
        } catch (Exception e) {         
        }

        //huidige lid uit de sessie halen
        Lid lid = (Lid) sessie.getAttribute("currentUser");

        //hibernate session
        Session session = null;
        session = SessionManager.openSession();
        Transaction tx = session.beginTransaction();

        //mijnritten ophalen en in de request plaatsen
        String hqlRitten = "FROM Rit WHERE LID_ID = '" + lid.getLidId() + "' AND RIT_DATUM >= current_date ORDER BY RIT_DATUM asc, RIT_TIJD asc";
        List<Rit> mijnRitten = session.createQuery(hqlRitten).list();
        request.setAttribute("mijnritten", mijnRitten);
        request.setAttribute("aantalmijnritten", mijnRitten.size());

        //mijnmeerijders ophalen en in de request plaatsen
        List<Lid> Meerijders = getMeerijders(ritid, session, 0);
        List<Lid> MeerijdersAccepted = getMeerijders(ritid, session, 1);

        request.setAttribute("meerijders", Meerijders);
        request.setAttribute("aantalmeerijders", Meerijders.size());
        request.setAttribute("meerijdersaccepted", MeerijdersAccepted);
        request.setAttribute("aantalmeerijdersaccepted", MeerijdersAccepted.size());
        request.setAttribute("selectedritid", ritid);

        String address = "/mijnRitten.jsp";
        RequestDispatcher dispatcher = request.getRequestDispatcher(address);
        dispatcher.forward(request, response);

        tx.commit();
        session.close();
    }

    private List<Lid> getMeerijders(int ritid, Session session, int accepted) {
        List<Lid> tempMeerijders = new ArrayList<Lid>();
        try {
            String sqlJoin = "SELECT L.lid_id FROM lid L INNER JOIN meerijder M ON L.lid_id = M.lid_id WHERE M.optie_geaccepteerd = " + accepted + " AND M.rit_id = " + ritid;
            List<Integer> MeerijLidnummers = session.createSQLQuery(sqlJoin).list();

            if (MeerijLidnummers.size() > 0) {
                for (int i = 0; i < MeerijLidnummers.size(); i++) {
                    Lid tempLid = (Lid) session.load(Lid.class, new Integer(MeerijLidnummers.get(i)));
                    tempMeerijders.add(tempLid);
                }
            }
        } catch (Exception e) {
        }
        return tempMeerijders;
    }
}
